import java.util.Arrays;

public class Candy {
    // 分糖果问题
    // https://www.nowcoder.com/practice/76039109dd0b47e994c08d8319faa352?tpId=295&tags=&title=&difficulty=0&judgeStatus=0&rp=0&sourceUrl=%2Fexam%2Foj%3FquestionJobId%3D10%26subTabName%3Donline_coding_page
    public int candy (int[] arr) {
        // write code here
        // 遍历两次数组：
        // 第一次从前往后遍历，然后处理右边元素大于左边元素的问题
        // 第二次从后往前遍历，处理左边元素大于右边元素的问题，然后这里的ret取最大值
        int len = arr.length;
        int[] ret = new int[len];
        Arrays.fill(ret, 1);
        for (int i = 1; i < len; i++) {
            if (arr[i] > arr[i-1]) {
                ret[i] = ret[i-1] + 1;
            }
        }
        for (int i = len-2; i >= 0; i--) {
            if (arr[i] > arr[i+1]) {
                ret[i] = Math.max(ret[i], ret[i+1] + 1);
            }
        }
        int sum = 0;
        for (int num : ret) {
            sum += num;
        }
        return sum;
    }
}
